<?php
/**
 * Аутентификация пользователей
 */
class UserIdentity extends CUserIdentity
{
	private $_id;
	private $_name;
	private $_email;

	public function authenticate($token = false)
	{
		// Достаем юзера по мылу
		$result = User::model()->findByAttributes(array('email' => $this->username));
		// Если не нашли, записываем ошибку
		if($result === null)
		{
			$this->errorCode = self::ERROR_USERNAME_INVALID;
		}
		// Если нашли, но пароль не совпадают - пишем ошибку
		else if($result->password !== crypt($this->password, $result->password))
		{
			$this->errorCode = self::ERROR_PASSWORD_INVALID;
		}
		else if($token)
		{
			$result->setToken();
			$result->save();
			return $result->token;
		}
		// Иначе записываем инфу о пользователе в сессию (в юзер идентити)
		else
		{
			$this->_id = $result->id;
			$this->_name = $result->first_name . ' ' . $result->last_name;
			$this->_email = $result->email;
			$this->errorCode = self::ERROR_NONE;
		}
		return !$this->errorCode;
	}
	
	public function getId()
	{
		return $this->_id;
	}
	
	public function getName()
	{
		return $this->_name;
	}
}